[% setvar title The Perl 6 Summary for the week ending 2005-05-24 %]
<div id="archive-notice">
    <h3>This file is part of the Perl 6 Archive</h3>
    <p>To see what is currently happening visit <a href="http://www.perl6.org/">http://www.perl6.org/</a></p>
</div>
<div class='pod'>
<a name='The Perl 6 Summary for the week ending 2005-05-24'></a><h1>The Perl 6 Summary for the week ending 2005-05-24</h1>
<p>Note to self: It's generally not a good idea to go installing Tiger on the day
you return from holiday. It's especially not a good idea to fail to check that
it didn't completely and utterly radish your Postfix configuration. And your
emacs. And the backing store for your website. And a bunch of other stuff. It's
an especially bad idea not to have backups of things like your aliases file...</p>
<p>Nor is it a good idea to get preoccupied with all these joys and completely
forget that you're supposed to be writ ting the Perl 6 summary.</p>
<p>Ahem.</p>
<p>I'm very, very sorry.</p>
<p>So, on with the show.</p>
<a name='This week in perl6-compiler'></a><h1>This week in perl6-compiler</h1>
<a name='Inline::Pugs'></a><h2>Inline::Pugs</h2>
<p>Autrijus announced the availability of Inline::Pugs. If you've ever been moved
to mix up Perls 5 and 6 in one program, your prayers have been answered. Just
grab Pugs and Inline and you're set. Brian Ingerson made things even more
delightfully evil:</p>
<pre>     #!perl
     use pugs;
     sub postfix:&lt;!&gt; { [*] 1..$_ }
     sub sum_factorial { [+] 0..$_! }
     no pugs;
     print sum_factorial(3); # 21</pre>
<p><a href='http://groups.google.com/groups?threadm=20050518205201.GA70318@aut.dyndns.org' target='_blank'>groups.google.com</a></p>
<a name='Experimental Coroutine support'></a><h2>Experimental Coroutine support</h2>
<p>Autrijus announced that Pugs now has an experimental implementation of
coroutines. It's almost certainly not final, but it's good enough for
exploration and feedback purposes.</p>
<p><a href='http://groups.google.com/groups?threadm=20050520154253.GA3870@aut.dyndns.org' target='_blank'>groups.google.com</a></p>
<a name='Graphing tool for PerlGuts Illustrated'></a><h2>Graphing tool for PerlGuts Illustrated</h2>
<p>Yuval Kogman asked what tool was used to generate the 'pretty diagrams' in
PerlGuts Illustrated because he wanted to use it for diagrams in a forthcoming
PugsGuts Illustrated. Ingy said that Gisle had hand hacked postscript based on
initial diagrams drawn on graph paper. After some discussion, the plan seems to
be that Yuval will just draw diagrams, scan them and bung them into the pugs
repository. He'll rely on the LazyWeb to turn them into beautiful scalable
graphics.</p>
<p><a href='http://www.lazyweb.org/' target='_blank'>www.lazyweb.org</a></p>
<p><a href='http://groups.google.com/groups?threadm=20050520190606.GB16763@woobling.org' target='_blank'>groups.google.com</a></p>
<a name='Perl Development Server'></a><h2>Perl Development Server</h2>
<p>Okay everyone, repeat after me: &quot;Juerd is a star!&quot;</p>
<p>You may ask me why, and I shall tell you.</p>
<p>Juerd and his cosponsors, Twistspace will making a Perl 6 development server
available over the internet to any Perl 6 developers who are working on
'everything that improves Perl 6 development'. So, if you've been put off
working on Pugs by the hassles of getting Haskell working on your machine, or
if you have the kind of bandwidth that makes svn updates a painful prospect,
worry no longer. Just sign up for a development account.</p>
<p>There was much rejoicing and suggesting of hostnames. Rather bizarrely, there
was also discussion of the etymology of 'sipuli' (Finnish for 'onion' in case
you were wondering).</p>
<p><a href='http://groups.google.com/groups?threadm=20050523151845.GS31996@c4.convolution.nl' target='_blank'>groups.google.com</a></p>
<a name='Two releases in one day'></a><h2>Two releases in one day</h2>
<p>Autrijus announced the release of Pugs 6.2.4. About half an hour later he
announced the release of Pugs 6.2.5.</p>
<p><a href='http://groups.google.com/groups?threadm=20050523214341.GA27266@aut.dyndns.org' target='_blank'>groups.google.com</a></p>
<a name='Undef issues'></a><h2>Undef issues</h2>
<p>Adrian Taylor thought he'd found some issues with Perl 6's understanding of
<code>undef</code>. It turned out that he'd found some issues with his own understanding
of same.</p>
<p><a href='http://groups.google.com/groups?threadm=42931D93.4020304@hohum.me.uk' target='_blank'>groups.google.com</a></p>
<a name='Method/attribute chaining'></a><h2>Method/attribute chaining</h2>
<p>Alex Gutteridge found some weirdness with the chaining of autogenerated
attribute methods (I wonder if the same weirdness occurs with hand rolled
attribute methods). So far it remains unfixed, but given the speed of Pugs
development I doubt it'll stay that way for long.</p>
<p><a href='http://groups.google.com/groups?threadm=198C085F-4F22-4848-9620-1B3BC4EC0428@ebi.ac.uk' target='_blank'>groups.google.com</a></p>
<a name='Meanwhile, in perl6-internals'></a><h1>Meanwhile, in perl6-internals</h1>
<a name='Parrot as an extension language'></a><h2>Parrot as an extension language</h2>
<p>Colin Adams continued to have problems using Parrot as an extension language
for Eiffel. It turns out that interfacing between statically strongly typed
languages and Parrot isn't easy.</p>
<p><a href='http://groups.google.com/groups?threadm=20050517141532.GA35977@aut.dyndns.org' target='_blank'>groups.google.com</a></p>
<a name='Fixing t/src/manifest.t'></a><h2>Fixing <b><i>t/src/manifest.t</i></b></h2>
<p>Dino Morelli reported problems with <b><i>t/src/manifest.t</i></b> and wondered how some
of the failures came about. Jürgen Bömmels thought that the problem was an
overzealous test -- the original version of which simply ensured that version
control and the <b><i>MANIFEST</i></b> were in sync. He provided his suggested version of
a less eager, but still svn compatible test. Further discussion thrashed out
the various difference use cases for manifest checking.</p>
<p><a href='http://groups.google.com/groups?threadm=Pine.LNX.4.58.0505172312220.4578@localhost.localdomain' target='_blank'>groups.google.com</a></p>
<a name='More t/p6rules tests'></a><h2>More <b><i>t/p6rules</i></b> tests</h2>
<p>Dino Morelli posted a bunch of tests for the Perl 6 rules. Well, he did once
he'd done battling his mailer's somewhat bizarre choice of MIME type for his
test files. Remember, if you're about to attach a <b><i>.t</i></b> file to a message you
send to the list, make sure your mailer doesn't declare it to be an
<code>application/x-troff</code> file -- <code>text/plain</code> is your fiend.</p>
<p>Patches were applied.</p>
<p><a href='http://groups.google.com/groups?threadm=Pine.LNX.4.58.0505181544380.3855@localhost.localdomain' target='_blank'>groups.google.com</a></p>
<a name='Stressing the hash'></a><h2>Stressing the hash</h2>
<p>Leo asked for some stress and bench mark tests for hashes because he was in the
process of redoing <b><i>src/hash.c</i></b>. Bob Rogers provided one.</p>
<p><a href='http://groups.google.com/groups?threadm=428DEF0E.3040304@toetsch.at' target='_blank'>groups.google.com</a></p>
<a name='In other news, PyPy gets an initial release'></a><h2>In other news, PyPy gets an initial release</h2>
<p>Leo crossposted the announcement of PyPy 0.6, a Python implementation written in
Python. It's not bootstrapping yet, but it's getting there...</p>
<p><a href='http://groups.google.com/groups?threadm=428F0933.8060200@toetsch.at' target='_blank'>groups.google.com</a></p>
<a name='PIR compilers broken'></a><h2>PIR compilers broken</h2>
<p>Will Coleda had some problems with with his TCL in PIR implementation. It turns
Nick Glencross helped to track down the problems with the snippet he
posted. I'm not sure whether his fix can be extended to work with the real
ParTCL.</p>
<p><a href='http://groups.google.com/groups?threadm=rt-3.0.11-35944-113457.6.35375312685319@perl.org' target='_blank'>groups.google.com</a></p>
<a name='MMD'></a><h2>MMD</h2>
<p>While working on mod_parrot, Jeff Horwitz ran into an issue with Multi Method
Des patch (MMD). In particularly he didn't seem to be able to declare a
multimethod that accepted an arbitrary PMC. Leo asked for a .t file so he could
explore the issue further, which Jeff provided.</p>
<p><a href='http://groups.google.com/groups?threadm=Pine.LNX.4.44.0505241423110.17298-100000@booger.sixgeeks.org' target='_blank'>groups.google.com</a></p>
<a name='State of ParTCL'></a><h2>State of ParTCL</h2>
<p>Will Coleda posted a summary of the current state of ParTCL. By the sound of
things, it's getting there.</p>
<p><a href='http://groups.google.com/groups?threadm=4292895C.5000301@coleda.com' target='_blank'>groups.google.com</a></p>
<a name='Meanwhile, in perl6-language'></a><h1>Meanwhile, in perl6-language</h1>
<a name='Virtual methods'></a><h2>Virtual methods</h2>
<p>Whilst noting that Perl 6 doesn't really need to be able to declare methods as
virtual in the same way as C++, since one can simply use the handy <code>...</code> to do
the job, Aaron Sherman noted that there was a case for something similar when
declaring 'stub' methods that could be overridden by Roles. The idea being that
you would implement an initial behaviour that could be further decorated by a
Role. Except, as Luke pointed out, the Roles system as currently defined treats
all such methods as overridable.</p>
<p>Aaron wasn't sure that this was such a good idea, and produced code to
illustrate why.</p>
<p><a href='http://groups.google.com/groups?threadm=1116425365.27930.6504.camel@pps' target='_blank'>groups.google.com</a></p>
<a name='Default precedence of user defined infix ops'></a><h2>Default precedence of user defined infix ops</h2>
<p>Ingo Blechschmidt  pointed out that user  defined infix operators  work in Pugs
now. He wondered what their default precedence should be and how to explicitly
define the precedence. Luke came forth with an answer, Sam Vilain asked an evil
question, and Damian Conway suggested that, given how drastically precedence
weirdness can mess with a programmer's head, there shouldn't be a default
precedence at all, and if there were, it should be looser than <code>infix:&lt;+&gt;</code>. I agree with Damian.</p>
<p><a href='http://groups.google.com/groups?threadm=loom.20050518T163123-806@post.gmane.org' target='_blank'>groups.google.com</a></p>
<a name='1,(2,3),4)[2]'></a><h2><code>1,(2,3),4)[2]</code></h2>
<p>Argh! My head hurts!</p>
<p>However, if you're not sure how context works in Perl 6, Juerd provides a
really good summary later in the thread</p>
<p><a href='http://groups.google.com/groups?threadm=428B9D69.70200@orthogon.com' target='_blank'>groups.google.com</a></p>
<p><a href='http://groups.google.com/groups?threadm=20050519210431.GA31996@c4.convolution.nl' target='_blank'>groups.google.com</a> -- Juerd explains context</p>
<a name='Reduce metaoperator on an empty list'></a><h2>Reduce metaoperator on an empty list</h2>
<p>Matt Fowles wondered how the shiny new reduce metaoperator worked given an
empty list. Various suggestions were forthcoming, but I lean towards Randal's
<code>inject</code> solution -- but I'm a Smalltalk fan, so no surprise
there. Personally, I reckon that the metaoperator version should just return
undef given an empty list -- if you want anything clever you should eschew the
syntactic sugar and use <code>inject</code> or something like it. It seems that the
consensus is leaning towards using an <code>identity</code> attribute on the infix
operator.</p>
<p>BTW, what happens when you apply <code>[/]</code> to a list with one element?</p>
<p><a href='http://groups.google.com/groups?threadm=f2601a7f050518175715927591@mail.gmail.com' target='_blank'>groups.google.com</a></p>
<a name='Complex Arithmetic'></a><h2>Complex Arithmetic</h2>
<p>Doing complex arithmetic right in a programming language is tricky. Edward
Cherlin wondered if Perl 6 should follow what seems to be the consensus among
programming languages that care about this sort of thing and use the shared
definitions used by APL, Common LISP and Ada. Luke thought it might be best
left to C6PAN. (The discerning language designer's equivalent to paying no
attention to the man behind the curtain methinks).</p>
<p><a href='http://groups.google.com/groups?threadm=200505190210.46390.cherlin@pacbell.net' target='_blank'>groups.google.com</a></p>
<a name='Syntax for specifying role parameters'></a><h2>Syntax for specifying role parameters</h2>
<p>Ingo Blechschmidt wondered if the syntax for specifying role parameters should
be the same as the standard subroutine signature syntax (with a slightly
modified proposed meaning for <code>:</code>). Thomas Sandlaß had some related
suggestions to add. Nothing from any of the design team yet.</p>
<p><a href='http://groups.google.com/groups?threadm=loom.20050519T141934-44@post.gmane.org' target='_blank'>groups.google.com</a></p>
<a name='./method'></a><h2><code>./method</code></h2>
<p>Martin Kuel can't make himself like <code>./method</code> as a shortcut for
<code>$whatever_you_call_self_this_week.method</code>. Frankly, I can't blame him. But
then I continue to think that the originally specified semantics of <code>.method</code>
(calls method on $_, whether in a method or a sub, or anywhere else for that
matter) are fine.</p>
<p><a href='http://groups.google.com/groups?threadm=c1d5a43d05051906071034cc7a@mail.gmail.com' target='_blank'>groups.google.com</a></p>
<a name='uniq'></a><h2><code>uniq</code></h2>
<p>Ingo wondered why <code>uniq</code> wasn't in the current draft of Synopsis 29. He also
wondered if its default comparator should be <code>=:=</code>. It turns out that there's
rather more to the semantics of <code>uniq</code> than you'd expect; Damian's
'hyper correct' implementation blew my mind.</p>
<p><a href='http://groups.google.com/groups?threadm=d6i8nq$o4k$1@sea.gmane.org' target='_blank'>groups.google.com</a></p>
<a name='s/.../{ $junction }/'></a><h2><code>s/.../{ $junction }/</code></h2>
<p>Junctions? In substitutions? What is Ingo thinking? Warnock applies.</p>
<p><a href='http://groups.google.com/groups?threadm=d6ij1d$vrr$1@sea.gmane.org' target='_blank'>groups.google.com</a></p>
<a name='Argument type checking'></a><h2>Argument type checking</h2>
<p>Joshua Gatcomb sought reassurance that</p>
<pre>    sub foo (Int $bar) { say $bar }
    foo 'hello';</pre>
<p>would do the right thing, namely throw an exception. Luke reassured him.</p>
<p><a href='http://groups.google.com/groups?threadm=941eab8405051912284cf481@mail.gmail.com' target='_blank'>groups.google.com</a></p>
<a name='How to create a new meta operator'></a><h2>How to create a new meta operator</h2>
<p>Ingo's obviously been in a very wondering mood this week. This time he wondered
if he could create a new meta operator in the obvious (to anyone who's read
Apocalypse 12 carefully) way. What? You've not read Apocalypse 12 carefully?
Shame on you! Like this:</p>
<pre>    sub infix_circumfix_meta_operator:{'-&gt;', '&lt;-'} (Code &amp;op, $left, $right)
      { op $left + 1, $right + 1 }

    say 2 -&gt;+&lt;- 3; # 7</pre>
<p>Luke thought so, but threw in his own question about how we'd specify meta
operators that only work on particular classes of operators.</p>
<p><a href='http://groups.google.com/groups?threadm=d6itkh$5nt$1@sea.gmane.org' target='_blank'>groups.google.com</a></p>
<a name='How to invoke a method reference'></a><h2>How to invoke a method reference</h2>
<p>Continuing to mine his wondering vein, Ingo asked how to invoke method
references. Juerd thought it'd work pretty much as it does in Perl 5.</p>
<p><a href='http://groups.google.com/groups?threadm=d6itr0$5nt$2@sea.gmane.org' target='_blank'>groups.google.com</a></p>
<a name='Junctive and Higher order Types'></a><h2>Junctive and Higher order Types</h2>
<p>Sam Vilain's question about converting a Haskellish chunk of code into Perl 6
was Warnocked.</p>
<p><a href='http://groups.google.com/groups?threadm=428D7B60.4060402@vilain.net' target='_blank'>groups.google.com</a></p>
<a name='foo(1: 2: 3: 4:)'></a><h2><code>foo(1: 2: 3: 4:)</code></h2>
<p>I was <i>so</i> tempted to use 'Multimethod colonoscopy' as the heading for this
section. Aren't you glad I resisted?</p>
<p>Autrijus has started to implement multi-level invocants in MMDs. He asked a
bunch of sanity check questions before proceeding. Luke and Damian provided the
sanity.</p>
<p><a href='http://groups.google.com/groups?threadm=20050520072351.GA96785@aut.dyndns.org' target='_blank'>groups.google.com</a></p>
<a name='Lazy context'></a><h2>Lazy context</h2>
<p>Borrowing Ingo's wondering hat, Yuval Kogman had questions about the semantics
of laziness. Laziness is one of many features of Perl 6 that's reasonably easy
to understand from the point of view of the user, but which is a big old can of
worms from the point of view of the implementer. I think I understood Yuval's
proposed semantics/implementation, but I'm stumped when it comes to summarizing
it. People seemed to like it though.</p>
<p><a href='http://groups.google.com/groups?threadm=20050520184807.GA16763@woobling.org' target='_blank'>groups.google.com</a></p>
<a name='Declaration of my() variables using symbolic referentiation'></a><h2>Declaration of <code>my()</code> variables using symbolic referentiation</h2>
<p>Snatching back his wondering hat, Ingo asked a question I didn't understand
about declaring <code>my</code> variables using symbolic referentiation. Frankly, I don't
even understand the subject. The consensus of those responding seemed to be
that what Ingo wanted to do was pretty silly in the first place.</p>
<p><a href='http://groups.google.com/groups?threadm=loom.20050521T131335-957@post.gmane.org' target='_blank'>groups.google.com</a></p>
<a name='Explicit laws about white space in rules'></a><h2>Explicit laws about white space in rules</h2>
<p>Jeff 'japhy' Pinyan wanted to know what the rules were about where white space
is permitted in rules. In particular, was it legal to write
<code>\c [CHARACTER NAME]</code>, or must he write <code>\c[CHARACTER NAME]</code>. Damian reckons
only the second is legal.</p>
<p><a href='http://groups.google.com/groups?threadm=Pine.LNX.4.61.0505222025370.26500@perlmonk.org' target='_blank'>groups.google.com</a></p>
<a name='And we're done'></a><h1>And we're done</h1>
<p>That's it for another week. Tune in at the same time next week when Mr Fowles
will entertain you all with his interpretation of the coming week's
events. I'll be back here the week after that.</p>
<p>If you find these summaries useful or enjoyable, please consider
contributing to the Perl Foundation to help support the development of
Perl.</p>
<p><a href='http://donate.perl-foundation.org/' target='_blank'>donate.perl-foundation.org</a> -- The Perl Foundation</p>
<p><a href='http://dev.perl.org/perl6/' target='_blank'>dev.perl.org</a> -- Perl 6 Development site</p>
<p>Or, you can check out my website. Maybe now I'm back writing stuff I'll start
updating it.</p>
<p><a href='http://www.bofh.org.uk/' target='_blank'>www.bofh.org.uk</a></p>
<p>Vaguely pretty photos by me can be found at:</p>
<p><a href='http://www.flickr.com/photos/pdcawley' target='_blank'>www.flickr.com</a></p>
</div>
